import itertools
import random

# 定义一个函数，用于计算表达式的值
def calc_expression(nums, ops):
    expression = "".join(f"{nums[i]}{ops[i]}" for i in range(len(ops))) + str(nums[-1])
    try:
        return eval(expression)
    except ZeroDivisionError:
        return None  # 防止除零错误

# 定义一个函数，用于生成所有的排列组合并检查是否能得到24
def find_24(nums):
    # 所有的数字排列组合
    for num_perm in itertools.permutations(nums):
        # 所有的操作符组合
        for ops in itertools.product(['+', '-', '*', '/'], repeat=4):  # 4个操作符
            result = calc_expression(num_perm, ops)
            if result == 24:
                # 返回有效的表达式
                return "".join(f"{num_perm[i]}{ops[i]}" for i in range(4)) + str(num_perm[-1])
    return None  # 如果没有找到

# 随机生成5个数字
def generate_random_numbers():
    return [random.randint(1, 20) for _ in range(5)]

# 主函数，生成5个随机数字并查找结果
def main():
    nums = generate_random_numbers()
    print(f"随机生成的数字：{nums}")
    result = find_24(nums)
    if result:
        print(f"可以得到24的表达式：{result}")
    else:
        print("没有找到能够得到24的表达式")


# 调用主函数
if __name__ == "__main__":
    main()
